package main

import (
	"fmt"
	"math/rand"
	"os"
	"time"

	"github.com/olekukonko/tablewriter"
)

// 模拟数据结构
type Metric struct {
	Name      string
	Messages  int
	Consumers int
}

func main() {
	// 每5秒更新一次
	ticker := time.NewTicker(5 * time.Second)
	defer ticker.Stop()

	for {
		// 模拟获取动态数据
		data := getMockData()

		// 清屏（让表格看起来在刷新）
		fmt.Print("\033[H\033[2J")

		fmt.Println("📊 当前 RabbitMQ 队列状态（每5秒刷新一次）")
		fmt.Println(time.Now().Format("2006-01-02 15:04:05"))

		// 使用 tablewriter 输出表格
		table := tablewriter.NewWriter(os.Stdout)
		table.SetHeader([]string{"队列名称", "消息数", "消费者数"})
		table.SetBorder(true)
		table.SetRowLine(true)
		table.SetAutoFormatHeaders(false)

		for _, q := range data {
			table.Append([]string{
				q.Name,
				fmt.Sprintf("%d", q.Messages),
				fmt.Sprintf("%d", q.Consumers),
			})
		}
		table.Render()

		// 等待下一次刷新
		<-ticker.C
	}
}

// 模拟数据来源（可替换为真实 API 调用）
func getMockData() []Metric {
	names := []string{"task_queue", "order_queue", "log_queue"}
	var result []Metric
	for _, n := range names {
		result = append(result, Metric{
			Name:      n,
			Messages:  rand.Intn(200),
			Consumers: rand.Intn(5),
		})
	}
	return result
}
